﻿//不停路径（medium): https://leetcode.cn/problems/unique-paths/description/
class Solution
{
public:
 int uniquePaths(int m, int n) 
 {
 vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0)); // 创建⼀个 dp表
 dp[0][1] = 1; // 初始化
 
 // 填表
 for (int i = 1; i <= m; i++) // 从上往下
 for (int j = 1; j <= n; j++) // 从左往右
就业课
 dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
 // 返回结果
 return dp[m][n];
 }
};

//不同路径II（medium）:https://leetcode.cn/problems/unique-paths-ii/
class Solution {
public:
 int uniquePathsWithObstacles(vector<vector<int>>& ob) {
 
 int m = ob.size(), n = ob[0].size();
 vector<vector<int>> dp(m + 1, vector<int>(n + 1));
 dp[1][0] = 1;
 for(int i = 1; i <= m; i++)
 for(int j = 1; j <= n; j++)
 if(ob[i - 1][j - 1] == 0)
 dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
 return dp[m][n];
 }
就业课
};